import multiprocessing
import os
import time


def watch():
    for i in range(3):
        print("看电视....", os.getpid())
        time.sleep(1)


def drink(name, food):
    for i in range(3):
        print(f"{name}喝{food}....", os.getpid())
        time.sleep(1)


def eat(name, food):
    for i in range(3):
        print(f"{name}吃{food}....", os.getpid())
        time.sleep(1)


if __name__ == '__main__':
    print("主进程", os.getpid())
    # 创建三个子进程
    watch_process = multiprocessing.Process(target=watch)
    # 如果希望在父进程创建子进程时，传递数据给子进程的话，可以选择kwargs，args中的任意一种来传递数据，kwargs字典与args元组，可以传递1个到多个数据
    drink_process = multiprocessing.Process(target=drink, kwargs={"name": "小明", "food": "羊汤"})  # 命名实参
    eat_process = multiprocessing.Process(target=eat, args=("小明", "米饭",))  # 位置实参
    # 注意，start表示调用开启进程操作，但是并不会阻塞等待进程真的开启，是一个异步操作。
    watch_process.start()
    drink_process.start()
    eat_process.start()

    print("主程序代码运行结束!")
